package com.gscitysfy.cus.drain.modules.inspection.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

import com.gscitysfy.cloudfrmwk.portal.vo.UserInfoVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * @author Administrator
 * @since 2022-10-14 15:00:46
 */
@Getter
@Setter
@TableName("drain_inspection_mn_plan")
public class DrainInspectionMnPlan implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId
    private Long cmKid;

    /**
     * 计划依据
     */
    private String cmPlanBasis;

    /**
     * 计划类型
     */
    private String cmPlanType;

    /**
     * 计划编号
     */
    private String cmPlanNo;

    /**
     * 计划频次
     */
    private String cmPlanFrequency;

    /**
     * 计划负责人id
     */
    private Long cmPlanHeaderId;

    /**
     * 计划负责人名称
     */
    private String cmPlanHeaderName;

    /**
     * 计划负责人电话
     */
    private String cmPlanHeaderPhone;

    /**
     * 计划执行人名称，以空格分隔
     */
    private String cmPlanExecutorName;

    /**
     * 计划开始日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanStartDate;

    /**
     * 计划结束日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanEndDate;

    /**
     * 下一次生成任务的时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanNextCreateDate;

    /**
     * 计划巡检对象类别
     */
    private String cmPlanObjectType;

    /**
     * 计划审核状态，0待审核，1审核通过，2审核通过
     */
    private Integer cmPlanApprovalStatus;

    /**
     * 计划审核意见
     */
    private String cmPlanApprovalComments;

    /**
     * 审核人id
     */
    private Long cmPlanApprovalUserId;

    /**
     * 审核人名称
     */
    private String cmPlanApprovalUsername;

    /**
     * 计划是否已结束，0表示未结束，1表示结束
     */
    private Integer cmPlanIsCompleted;

    /**
     * 计划巡检区域点集合
     */
    private String cmPlanAreaPoints;

    /**
     * 计划巡检区域颜色
     */
    private String cmPlanAreaColor;

    /**
     * 计划名称
     */
    private String cmPlanName;

    /**
     * 下一次计划开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanNextStartDate;

    /**
     * 执行人集合
     */
    @TableField(exist = false)
    private List<DrainInspectionRlUser> userList;

    @TableField(fill = FieldFill.INSERT)
    private String cmCreator;

    @TableField(fill = FieldFill.UPDATE)
    private String cmModifier;

    private String cmOrgflag;

    private String cmRegflag;

    private Long cmTenantid;
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmAddtime;

    @TableField(fill = FieldFill.UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmUptime;

    private Long cmVersion;

    @TableField(fill = FieldFill.INSERT)
    private Boolean cmUsable;

    /**
     * 区域点位集合
     */
    @TableField(exist = false)
    private List<DrainInspectionRlPoint> areaPoints;

    /**
     * 巡检对象单位集合
     */
    @TableField(exist = false)
    private List<DrainInspectionRlPoint> objectPoints;

    /**
     * 计划分类 0表示巡检计划 1表示养护计划，2表示检查计划
     */
    private Integer cmPlanCategory;

}
